from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from info import create_app, db, redis_store
import logging
from flask import current_app




# 从单一职责的原则考虑，manage文件单独作为项目启动文件，其他配置抽取出去
from info.models import User
app = create_app("development")
# 创建数据库管理对象，将app交给管理对象管理
manager = Manager(app)
# 数据库迁移出事化
Migrate(app, db)

# 添加迁移命令
manager.add_command("db", MigrateCommand)

"""
python3 manage.py createsuperuser -n "admin" -p "12345"
"""
@manager.option("-n", "--name", dest="name")
@manager.option("-p", "--password", dest="password")
def createsuperuser(name, password):
    """
    创建管理员用户
    :param name: 账号
    :param password:  密码
    :return:
    """
    # 获取参数和校验
    if not all([name, password]):
        print("参数不足")
        return

    # 创建管理员用户对象， 并保存到数据库
    admin_user = User()
    admin_user.mobile = name
    admin_user.password = password
    admin_user.nick_name = name
    # 管理员标志
    admin_user.is_admin = True

    try:
        db.session.add(admin_user)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        print("保存到数据库异常")

    print("创建管理员用户成功")




if __name__ == '__main__':
    manager.run()
